home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / grep.fpl < prev    next >
Text File  |  1996-10-21  |  3KB  |  89 lines

  1.  
  2. string history[1];
  3. int history_len=0;
  4.  
  5. export void Grep()
  6. {
  7.   if (!Stricmp(ReadInfo("file_name"), "Grep.Tmp")) {
  8.     int line;
  9.     int buffer_id;
  10.     string directory=GetLine(1);
  11.     line=atoi(GetLine());
  12.     if (line) {
  13.       int counter;
  14.       string file;
  15.       for (counter=ReadInfo("line")-1; counter>0; counter--) {
  16.         file=GetLine(counter);
  17.         if (file[0]!=' ' && (file[0]<'0' || file[0]>'9'))
  18.           break;
  19.       }
  20.       if (counter>0) {
  21.         for (counter=strlen(file)-1; counter>0; counter--) {
  22.           if (file[counter]==':')
  23.             break;
  24.         }
  25.         file=substr(file, 0, counter);
  26.         buffer_id=GetBufferID(file);
  27.         if (buffer_id && ReadInfo("changes", buffer_id)) {
  28.           if (!Request(joinstr("'", file, "' exist as a changed buffer!\n\nDo you want to activate the internal buffer?"), "Grep information", "Activate existing|Load origin"))
  29.             buffer_id=0;
  30.         }
  31.         if (buffer_id) {
  32.           Activate(buffer_id);
  33.           CurrentBuffer(buffer_id);
  34.         } else {
  35.           buffer_id=New();
  36.           Activate(buffer_id);
  37.           CurrentBuffer(buffer_id);
  38.           if (strcmp(directory, "")) {
  39.             int old_expand=ReadInfo("expand_path");
  40.             SetInfo(-1, "expand_path", 2);
  41.             Load(file);
  42.             SetInfo(-1, "expand_path", old_expand);
  43.           } else
  44.             Load(file);
  45.         }
  46.         GotoLine(line);
  47.       }
  48.     } else
  49.       ReturnStatus("No valid line!");
  50.   } else {
  51.     string grep_input;
  52.     string directory=ReadInfo("directory");
  53.     int input_id=GetEntryID();
  54.     int grep_buffer;
  55.  
  56.     Visible(0);
  57.     RequestWindow("[Grep] pattern files",
  58.                   "", "A", &history, &grep_input, history_len
  59.                   "Directory", "S", &directory);
  60.     if (strlen(grep_input)) {
  61.       string old_directory;
  62.  
  63.       resize history[history_len+1];
  64.       history[history_len]=grep_input;
  65.       history_len++;
  66.       System("echo >T:Grep.Tmp \""+directory+"\"\n");
  67.       grep_input=joinstr("Grep ", grep_input, " >>T:Grep.Tmp");
  68.       Status(0, "Grep is working...");
  69.  
  70.       old_directory=ReadInfo("directory");    // New directory
  71.       SetInfo(0, "directory", directory);
  72.       System(grep_input);
  73.  
  74.       SetInfo(0, "directory", old_directory);    // Set old directory
  75.  
  76.       grep_buffer=New();
  77.       if (grep_buffer) {
  78.         Activate(grep_buffer);
  79.         CurrentBuffer(grep_buffer);
  80.         Load("T:Grep.Tmp");
  81.       }
  82.     } else
  83.       ReturnStatus("Function cancel!");
  84.     Visible(1);
  85.   }
  86. }
  87.  
  88. Grep();
  89.